﻿using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;

namespace 凯旋归来管理端.models
{
    public class 物品信息
    {
        public int Id;
        public string 类型;
        public string 外观2D;
        public string 外观3D;
        public int 等级;
        public string 英文名称;
        public bool 数量;
        public string 备注;
        public int 宽度;
        public int 高度;
        public int 穿戴位置;
        public int 持久开关1;
        public int 持久开关2;
        public int 集中力;
        public int 分散力;
        public int 属性要求;
        public string 封包属性;
        public byte 后续封包格式;
        public string 脚本;
        public int 种族;
        public int 职业;
        public static 物品信息[] 数据表转数组(DataTable dt)
        {
            物品信息[] ret = new 物品信息[dt.Rows.Count];
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                ret[i] = new 物品信息();
                int.TryParse(dt.Rows[i]["id"].ToString(), out ret[i].Id);
                ret[i].类型 = dt.Rows[i]["类型"].ToString();
                ret[i].外观2D = dt.Rows[i]["外观2D"].ToString();
                ret[i].外观3D = dt.Rows[i]["外观3D"].ToString();
                int.TryParse(dt.Rows[i]["等级"].ToString(), out ret[i].等级);
                ret[i].英文名称 = dt.Rows[i]["英文名称"].ToString();
                bool.TryParse(dt.Rows[i]["数量"].ToString(), out ret[i].数量);
                ret[i].备注= dt.Rows[i]["备注"].ToString();

                int.TryParse(dt.Rows[i]["宽度"].ToString(), out ret[i].宽度);
                int.TryParse(dt.Rows[i]["高度"].ToString(), out ret[i].高度);

                int.TryParse(dt.Rows[i]["穿戴位置"].ToString(), out ret[i].穿戴位置);
                int.TryParse(dt.Rows[i]["持久开关1"].ToString(), out ret[i].持久开关1);
                int.TryParse(dt.Rows[i]["持久开关2"].ToString(), out ret[i].持久开关2);
                int.TryParse(dt.Rows[i]["集中力"].ToString(), out ret[i].集中力);
                int.TryParse(dt.Rows[i]["分散力"].ToString(), out ret[i].分散力);
                int.TryParse(dt.Rows[i]["属性要求"].ToString(), out ret[i].属性要求);
                ret[i].封包属性 = dt.Rows[i]["封包属性"].ToString();
                Byte.TryParse(dt.Rows[i]["后续封包格式"].ToString(), out ret[i].后续封包格式);
                ret[i].脚本 = dt.Rows[i]["脚本"].ToString();
                int.TryParse(dt.Rows[i]["种族"].ToString(), out ret[i].种族);
                int.TryParse(dt.Rows[i]["职业"].ToString(), out ret[i].职业);
            }
            return ret;
        }
        public string 保存已有物品(string connstr)
        {

            string sql = "UPDATE 物品信息 SET 类型=@0,外观2D=@1,外观3D=@2,等级=@3,英文名称=@4,数量=@5,备注=@6,宽度=@7,高度=@8,穿戴位置=@9,持久开关1=@10,持久开关2=@11,集中力=@12,分散力=@13,属性要求=@14,封包属性=@15,后续封包格式=@16,脚本=@17,种族=@18,职业=@19 WHERE id=@20";
            using (MySqlConnection conn = new MySqlConnection(connstr))
            {
                try
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("@0", this.类型);
                    cmd.Parameters.AddWithValue("@1", this.外观2D);
                    cmd.Parameters.AddWithValue("@2", this.外观3D);
                    cmd.Parameters.AddWithValue("@3", this.等级);
                    cmd.Parameters.AddWithValue("@4", this.英文名称);
                    cmd.Parameters.AddWithValue("@5", this.数量);
                    cmd.Parameters.AddWithValue("@6", this.备注);
                    cmd.Parameters.AddWithValue("@7", this.宽度);
                    cmd.Parameters.AddWithValue("@8", this.高度);
                    cmd.Parameters.AddWithValue("@9", this.穿戴位置);
                    cmd.Parameters.AddWithValue("@10", this.持久开关1);
                    cmd.Parameters.AddWithValue("@11", this.持久开关2);
                    cmd.Parameters.AddWithValue("@12", this.集中力);
                    cmd.Parameters.AddWithValue("@13", this.分散力);
                    cmd.Parameters.AddWithValue("@14", this.属性要求);
                    cmd.Parameters.AddWithValue("@15", this.封包属性);
                    cmd.Parameters.AddWithValue("@16", this.后续封包格式);
                    cmd.Parameters.AddWithValue("@17", this.脚本);
                    cmd.Parameters.AddWithValue("@18", this.种族);
                    cmd.Parameters.AddWithValue("@19", this.职业);
                    cmd.Parameters.AddWithValue("@20", this.Id);

                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    return ex.ToString(); ;
                }
                finally
                {
                    conn.Close();
                }
            }
            return "";
        }
        public string 新建(string connstr,int id)
        {
            string sql = "INSERT INTO 物品信息 (类型,外观2D,外观3D,等级,英文名称,数量,备注,宽度,高度,穿戴位置,持久开关1,持久开关2,集中力,分散力,属性要求,封包属性,后续封包格式,脚本,种族,职业,id)VALUE";
            sql += "(@0,@1,@2,@3,@4,@5,@6,@7,@8,@9,@10,@11,@12,@13,@14,@15,@16,@17,@18,@19,@20)";
            using (MySqlConnection conn = new MySqlConnection(connstr))
            {
                try
                {
                    conn.Open();
                    MySqlCommand cmd = new MySqlCommand(sql, conn);
                    cmd.Parameters.AddWithValue("@0", this.类型);
                    cmd.Parameters.AddWithValue("@1", this.外观2D);
                    cmd.Parameters.AddWithValue("@2", this.外观3D);
                    cmd.Parameters.AddWithValue("@3", this.等级);
                    cmd.Parameters.AddWithValue("@4", this.英文名称);
                    cmd.Parameters.AddWithValue("@5", this.数量);
                    cmd.Parameters.AddWithValue("@6", this.备注);
                    cmd.Parameters.AddWithValue("@7", this.宽度);
                    cmd.Parameters.AddWithValue("@8", this.高度);
                    cmd.Parameters.AddWithValue("@9", this.穿戴位置);
                    cmd.Parameters.AddWithValue("@10", this.持久开关1);
                    cmd.Parameters.AddWithValue("@11", this.持久开关2);
                    cmd.Parameters.AddWithValue("@12", this.集中力);
                    cmd.Parameters.AddWithValue("@13", this.分散力);
                    cmd.Parameters.AddWithValue("@14", this.属性要求);
                    cmd.Parameters.AddWithValue("@15", this.封包属性);
                    cmd.Parameters.AddWithValue("@16", this.后续封包格式);
                    cmd.Parameters.AddWithValue("@17", this.脚本);
                    cmd.Parameters.AddWithValue("@18", this.种族);
                    cmd.Parameters.AddWithValue("@19", this.职业);
                    cmd.Parameters.AddWithValue("@20", id);

                    cmd.ExecuteNonQuery();
                }
                catch (Exception ex)
                {
                    return ex.ToString(); ;
                }
                finally
                {
                    conn.Close();
                }
            }
            return "";
        }
    }
}
